//引入Q模块
var Q = require('q');
//引入公共函数
var util = require('../../util');
//引入fs模块
var fs = require('fs');
//引入path模块
var path = require('path');

//getUploadFile入口函数
var index = function(getData, postData, config, _redis, db) {
	var deferred = Q.defer();
	//存放文件路径变量
	var filePath = '';
	//存放文件MIME类型变量
	var contentType = '';
	//判断是否传入了商户ID、文件分类、图片名称
	util.isSet(getData.storeId, getData.type, getData.name).then(function() {
		//拼接文件路径
		filePath = config.uploadPath + '/' + getData.storeId + '/' + getData.type + '/' + getData.name;
		//调用函数根据路径后缀得到此文件的MIME类型
		return suffix2mime(path.extname(filePath).substr(1), config.suffixMap);
	}, function() {
		//调用获取文件接口的参数不足
		deferred.reject('-0057');
	}).then(function(mime) {
		//存放文件的MIME类型
		contentType = mime;
		//判断获取的文件是否存在
		return util.fsExists(filePath);
	}, function() {
		//不是合法的下载类型如需开放此类型应在config中往suffixMap添加对应项
		deferred.reject('-0058');
	}).then(function() {
		//读取文件内容
		fileContent = fs.readFileSync(filePath);
		//判断是否获取到文件内容
		if(fileContent) {
			console.log(fileContent);
			//返回文件数据到输出
			deferred.resolve(['file', {
				contentType: contentType,
				fileContent: fileContent
			}]);
		}
		else {
			//读取文件内容失败
			deferred.reject('-0059');
		}
	}, function() {
		//获取的文件不存在
		deferred.reject('-0060');
	});
	return deferred.promise;
}

//将后缀转换为MIME类型

var suffix2mime = function(suffix, suffixMap) {
	var deferred = Q.defer();
	//设置当前后缀index
	var suffixIndex = 0;
	//遍历后缀表
	for(var _suffix in suffixMap) {
		//是否找到对应的后缀
		if(_suffix == suffix) {
			//找到对应的后缀的MIME类型并返回
			deferred.resolve(suffixMap[_suffix]);
			break;
		}
		//判断是否已经遍历到最后一个（未找到）
		if(++suffixIndex == Object.keys(suffixMap).length) {
			deferred.reject();
		}
	}
	return deferred.promise;
}

//暴露接口
module.exports = {
	index: index
};